/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

/**
 *
 * @author Antonio
 */
@Entity
@IdClass(common.DettaglioPrezzoPK.class)
@NamedQueries({
    @NamedQuery(name = "dettaglioPrezzo.prodottiNonInVendita", query = "SELECT DISTINCT(p) FROM Prodotto p WHERE NOT EXISTS( SELECT dp FROM DettaglioPrezzo dp WHERE dp.negozio.id=?1 AND dp.prodotto = p)"),
    @NamedQuery(name = "dettaglioPrezzo.prezzoDaProdottoNegozio", query = "SELECT dp.prezzo FROM DettaglioPrezzo dp WHERE dp.negozio.id =?1 AND dp.prodotto.codiceBarre =?2"),
    @NamedQuery(name = "dettaglioPrezzo.cercaDaNegozio", query = "SELECT dp FROM DettaglioPrezzo dp WHERE dp.negozio.id=?1"),
    @NamedQuery(name = "dettaglioPrezzo.cercaDaProdotto", query = "SELECT dp FROM DettaglioPrezzo dp WHERE dp.prodotto.codiceBarre=?1"),
    @NamedQuery(name = "dettaglioPrezzo.prodottiMarchioNonInVendita", query = "SELECT p FROM Prodotto p WHERE p.marchio.id = ?1 AND NOT EXISTS( SELECT dp.prodotto FROM DettaglioPrezzo dp WHERE dp.negozio.id=?2 AND p = dp.prodotto)"),
    @NamedQuery(name = "dettaglioPrezzo.marchiProdottiInVendita", query = "SELECT m FROM Marchio m WHERE EXISTS(SELECT dp.prodotto.marchio FROM DettaglioPrezzo dp WHERE dp.prodotto.marchio = m AND dp.negozio.id=?1)"),
    @NamedQuery(name = "dettaglioPrezzo.prodottiMarchioInVendita", query = "SELECT p FROM Prodotto p WHERE p.marchio.id=?1 AND p.codiceBarre IN(SELECT dp.prodotto.codiceBarre FROM DettaglioPrezzo dp WHERE dp.negozio.id=?2)")})
public class DettaglioPrezzo implements Serializable {

    private float prezzo;
    @Id
    @JoinColumn(name = "prodotto")
    @ManyToOne
    private Prodotto prodotto;
    @Id
    @JoinColumn(name = "negozio")
    @ManyToOne
    private Negozio negozio;

    /**
     * Get the value of negozio
     *
     * @return the value of negozio
     */
    public Negozio getNegozio() {
        return negozio;
    }

    /**
     * Set the value of negozio
     *
     * @param negozio new value of negozio
     */
    public void setNegozio(Negozio negozio) {
        this.negozio = negozio;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 67 * hash + (this.negozio != null ? this.negozio.hashCode() : 0);
        hash = 67 * hash + (this.prodotto != null ? this.prodotto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DettaglioPrezzo other = (DettaglioPrezzo) obj;
        if (this.negozio != other.negozio && (this.negozio == null || !this.negozio.equals(other.negozio))) {
            return false;
        }
        if (this.prodotto != other.prodotto && (this.prodotto == null || !this.prodotto.equals(other.prodotto))) {
            return false;
        }
        return true;
    }

    public float getPrezzo() {
        return prezzo;
    }

    public void setPrezzo(float prezzo) {
        this.prezzo = prezzo;
    }

    public Prodotto getProdotto() {
        return prodotto;
    }

    public void setProdotto(Prodotto prodotto) {
        this.prodotto = prodotto;
    }
}
